package com.ynet.middleground.user.service;

import com.ynet.core.common.BaseReqObj;
import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.user.bean.AddUserRoleRelationReq;
import com.ynet.middleground.user.bean.DeleteAddUserRoleRelationReq;
import com.ynet.middleground.user.bean.QueryUserRoleRelationListReq;
import com.ynet.middleground.user.bean.QueryUserRoleRelationReq;
import com.ynet.middleground.user.dto.*;

import javax.validation.Valid;
import java.util.List;

/**
 * @program: 2019-11-26_userCenter
 * @description: 企业员工用户角色关联服务
 * @author: Wangxz
 * @create: 2019-11-26 17:03
 **/
public interface UserRoleRelationService {

    /**
     * 员工角色关系添加
     *
     * @param addUserRoleRelationReq
     * @return
     */
    public ServiceResult<String> addUserRoleRelation(@Valid AddUserRoleRelationReq addUserRoleRelationReq);

    /**
     * 员工角色关系删除
     *
     * @param deleteAddUserRoleRelationReq
     * @return
     */
    public ServiceResult<String>
        deleteUserRoleRelation(@Valid DeleteAddUserRoleRelationReq deleteAddUserRoleRelationReq);

    /**
     * 分页查询角色关系
     *
     * @param queryUserRoleRelationReq
     * @return
     */
    public ServiceResult<List<UserRoleRelationDto>>
        queryUserRoleRelationList(@Valid QueryUserRoleRelationReq queryUserRoleRelationReq);

    /**
     * 查询角色关系
     * 
     * @param queryUserRoleRelationReq
     * @return
     */
    public ServiceResult<List<UserRoleRelationDto>>
        queryUserRoleRelationInfo(@Valid QueryUserRoleRelationListReq queryUserRoleRelationListReq);

    /**
     * 查询港内员工组织结构
     *
     * @return
     */
    public ServiceResult<List<QueryOrganizationalStructureDto>> queryOrganizationalStructureList(@Valid BaseReqObj requestObject);

    /**
     * 查询企业组织结构
     */
    public ServiceResult<List<QueryCorporateOrganizationRoleDto>> queryCorporateOrganizationRole(@Valid BaseReqObj requestObject);

    /**
     * 港内员工信息查询
     *
     * @return
     */
    public ServiceResult<List<QueryPortUserInfoDto>> queryPortUserInfoList(@Valid BaseReqObj requestObject);

    /**
     * 企业员工信息查询
     *
     * @return
     */
    public ServiceResult<List<QueryEnterpriseUserInfoDto>> queryEnterpriseUserInfo(@Valid BaseReqObj requestObject);
}
